<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Table of Contents &middot; Crafting Interpreters</title>

<!-- Tell mobile browsers we're optimized for them and they don't need to crop
     the viewport. -->
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="stylesheet" type="text/css" href="style.css" />

<!-- Oh, God, Source Code Pro is so beautiful it makes me want to cry. -->
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400|Source+Sans+Pro:300,400,600' rel='stylesheet' type='text/css'>

<link rel="icon" type="image/png" href="image/favicon.png" />
<script src="jquery-3.4.1.min.js"></script>
<script src="script.js"></script>

<!-- Google analytics -->
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-42804721-2', 'auto');
  ga('send', 'pageview');
</script>

</head>
<body id="top">

<!-- <div class="scrim"></div> -->

<nav class="wide">
  <a href="/"><img src="image/logotype.png" title="Crafting Interpreters"></a>
  <div class="contents">
    <h2><a href="#top"><small>&nbsp;</small> Table of Contents</a></h2>
    <ul>
      <li><a href="#welcome"><small>I</small>Welcome</a></li>
      <li><a href="#a-tree-walk-interpreter"><small>II</small>A Tree-Walk Interpreter</a></li>
      <li><a href="#a-bytecode-virtual-machine"><small>III</small>A Bytecode Virtual Machine</a></li>
      <li><a href="#backmatter"><small>&#10087;</small>Backmatter</a></li>
    </ul>
        <div class="prev-next">
        <a href="acknowledgements.html" title="Acknowledgements" class="left">&larr;&nbsp;Previous</a>
        <a href="index.html" title="Crafting Interpreters">&uarr;&nbsp;Up</a>
        <a href="welcome.html" title="Welcome" class="right">Next&nbsp;&rarr;</a>
    </div>  </div>
</nav>

<nav class="narrow">
<a href="/"><img src="image/logotype.png" title="Crafting Interpreters"></a>
<a href="acknowledgements.html" title="Acknowledgements" class="prev">←</a>
<a href="welcome.html" title="Welcome" class="next">→</a>
</nav>

<div class="page">
<div class="nav-wrapper">
<nav class="floating">
  <a href="/"><img src="image/logotype.png" title="Crafting Interpreters"></a>
  <div class="expandable">
    <h2><a href="#top"><small>&nbsp;</small> Table of Contents</a></h2>
    <ul>
      <li><a href="#welcome"><small>I</small>Welcome</a></li>
      <li><a href="#a-tree-walk-interpreter"><small>II</small>A Tree-Walk Interpreter</a></li>
      <li><a href="#a-bytecode-virtual-machine"><small>III</small>A Bytecode Virtual Machine</a></li>
      <li><a href="#backmatter"><small>&#10087;</small>Backmatter</a></li>
    </ul>
        <div class="prev-next">
        <a href="acknowledgements.html" title="Acknowledgements" class="left">&larr;&nbsp;Previous</a>
        <a href="index.html" title="Crafting Interpreters">&uarr;&nbsp;Up</a>
        <a href="welcome.html" title="Welcome" class="right">Next&nbsp;&rarr;</a>
    </div>  </div>
  <a id="expand-nav">≡</a>
</nav>
</div>

<article class="contents">

<h1 class="part">Table of Contents</h1>

<div class="chapters">
  <div class="row">
    <div class="first">
    <h2><span class="num">&#10087;</span>Frontmatter</h2>
    <ul>
      <li><span class="num">&nbsp;</span><a href="dedication.html">Dedication</a></li>
      <li><span class="num">&nbsp;</span><a href="acknowledgements.html">Acknowledgements</a></li>
    </ul>

      <h2><span class="num">I.</span><a href="welcome.html" name="welcome">Welcome</a></h2>
      <ul>
        <li><span class="num">1.</span><a href="introduction.html">Introduction</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="introduction.html#design-note">Design Note: What&rsquo;s in a Name?</a>
        </li>
        <li><span class="num">2.</span><a href="a-map-of-the-territory.html">A Map of the Territory</a>
        </li>
        <li><span class="num">3.</span><a href="the-lox-language.html">The Lox Language</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="the-lox-language.html#design-note">Design Note: Expressions and Statements</a>
        </li>
      </ul>      <h2><span class="num">II.</span><a href="a-tree-walk-interpreter.html" name="a-tree-walk-interpreter">A Tree-Walk Interpreter</a></h2>
      <ul>
        <li><span class="num">4.</span><a href="scanning.html">Scanning</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="scanning.html#design-note">Design Note: Implicit Semicolons</a>
        </li>
        <li><span class="num">5.</span><a href="representing-code.html">Representing Code</a>
        </li>
        <li><span class="num">6.</span><a href="parsing-expressions.html">Parsing Expressions</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="parsing-expressions.html#design-note">Design Note: Logic Versus History</a>
        </li>
        <li><span class="num">7.</span><a href="evaluating-expressions.html">Evaluating Expressions</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="evaluating-expressions.html#design-note">Design Note: Static and Dynamic Typing</a>
        </li>
        <li><span class="num">8.</span><a href="statements-and-state.html">Statements and State</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="statements-and-state.html#design-note">Design Note: Implicit Variable Declaration</a>
        </li>
        <li><span class="num">9.</span><a href="control-flow.html">Control Flow</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="control-flow.html#design-note">Design Note: Spoonfuls of Syntactic Sugar</a>
        </li>
        <li><span class="num">10.</span><a href="functions.html">Functions</a>
        </li>
        <li><span class="num">11.</span><a href="resolving-and-binding.html">Resolving and Binding</a>
        </li>
        <li><span class="num">12.</span><a href="classes.html">Classes</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="classes.html#design-note">Design Note: Prototypes and Power</a>
        </li>
        <li><span class="num">13.</span><a href="inheritance.html">Inheritance</a>
        </li>
      </ul>    </div>
    <div class="second">
      <h2><span class="num">III.</span><a href="a-bytecode-virtual-machine.html" name="a-bytecode-virtual-machine">A Bytecode Virtual Machine</a></h2>
      <ul>
        <li><span class="num">14.</span><a href="chunks-of-bytecode.html">Chunks of Bytecode</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="chunks-of-bytecode.html#design-note">Design Note: Test Your Language</a>
        </li>
        <li><span class="num">15.</span><a href="a-virtual-machine.html">A Virtual Machine</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="a-virtual-machine.html#design-note">Design Note: Register-Based Bytecode</a>
        </li>
        <li><span class="num">16.</span><a href="scanning-on-demand.html">Scanning on Demand</a>
        </li>
        <li><span class="num">17.</span><a href="compiling-expressions.html">Compiling Expressions</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="compiling-expressions.html#design-note">Design Note: It&rsquo;s Just Parsing</a>
        </li>
        <li><span class="num">18.</span><a href="types-of-values.html">Types of Values</a>
        </li>
        <li><span class="num">19.</span><a href="strings.html">Strings</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="strings.html#design-note">Design Note: String Encoding</a>
        </li>
        <li><span class="num">20.</span><a href="hash-tables.html">Hash Tables</a>
        </li>
        <li><span class="num">21.</span><a href="global-variables.html">Global Variables</a>
        </li>
        <li><span class="num">22.</span><a href="local-variables.html">Local Variables</a>
        </li>
        <li><span class="num">23.</span><a href="jumping-back-and-forth.html">Jumping Back and Forth</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="jumping-back-and-forth.html#design-note">Design Note: Considering Goto Harmful</a>
        </li>
        <li><span class="num">24.</span><a href="calls-and-functions.html">Calls and Functions</a>
        </li>
        <li><span class="num">25.</span><a href="closures.html">Closures</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="closures.html#design-note">Design Note: Closing Over the Loop Variable</a>
        </li>
        <li><span class="num">26.</span><a href="garbage-collection.html">Garbage Collection</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="garbage-collection.html#design-note">Design Note: Generational Collectors</a>
        </li>
        <li><span class="num">27.</span><a href="classes-and-instances.html">Classes and Instances</a>
        </li>
        <li><span class="num">28.</span><a href="methods-and-initializers.html">Methods and Initializers</a>
        </li>
        <li class="design-note">
        <span class="num">&nbsp;</span><a href="methods-and-initializers.html#design-note">Design Note: Novelty Budget</a>
        </li>
        <li><span class="num">29.</span><a href="superclasses.html">Superclasses</a>
        </li>
        <li><span class="num">30.</span><a href="optimization.html">Optimization</a>
        </li>
      </ul>
    <h2><span class="num">&#10087;</span><a href="backmatter.html" name="backmatter">Backmatter</a></h2>
    <ul>
      <li><span class="num">A1.</span><a href="appendix-i.html">Appendix I: Lox Grammar</a></li>
      <li><span class="num">A2.</span><a href="appendix-ii.html">Appendix II: Generated Syntax Tree Classes</a></li>
    </ul>
    </div>
  </div>
</div>

<footer>
  <a href="welcome.html" class="next">
    First Part: &ldquo;Welcome&rdquo; &rarr;
  </a>
Handcrafted by Robert Nystrom&ensp;&mdash;&ensp;<a href="https://github.com/munificent/craftinginterpreters/blob/master/LICENSE" target="_blank">&copy; 2015&hairsp;&ndash;&hairsp;2020</a>
</footer>
</article>

</div>
</body>
</html>
